package com.hamilton.erik.pt.core.dao.factory;

import com.hamilton.erik.pt.core.dao.AnimalDAO;
import com.hamilton.erik.pt.core.dao.BreedingDAO;
import com.hamilton.erik.pt.core.dao.EnclosureDAO;
import com.hamilton.erik.pt.core.dao.EnclosureMaintenanceDAO;
import com.hamilton.erik.pt.core.dao.FeedingDAO;
import com.hamilton.erik.pt.core.dao.MedicalRecordDAO;
import com.hamilton.erik.pt.core.dao.NoteDAO;
import com.hamilton.erik.pt.core.dao.UserDAO;

public abstract class DAOFactory {
	
	public enum DAOFactoryType {
		H2;
	}

	public abstract AnimalDAO getAnimalDAO();
	public abstract BreedingDAO getBreedingDAO();
	public abstract EnclosureDAO getEnclosureDAO();
	public abstract EnclosureMaintenanceDAO getEnclosureMaintenanceDAO();
	public abstract FeedingDAO getFeedingDAO();
	public abstract MedicalRecordDAO getMedicalRecordDAO();
	public abstract NoteDAO getNoteDAO();
	public abstract UserDAO getUserDAO();
	
	public static DAOFactory getDAOFactory(DAOFactoryType factoryType) {
		switch(factoryType) {
			case H2 :
				return new H2DAOFactory();
			default :
				return null;
		}
	}
}
